﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using MoviTiendas.Logica;
using MoviTiendas.Comunicacion;

namespace MoviTiendas.Interfaz
{
    public partial class PaginaEscogerLista : PhoneApplicationPage
    {
        // ------------------------------------------------------------------------------------
        // Atributos
        // ------------------------------------------------------------------------------------

        /**
         * Lista de celdas, las cuales contienen listas
         */
        public List<CeldaCheck> celdas { get; set; }

        /**
         * Item que se quiere agregar a una lista
         */
        public Item item { get; set; }


        // ------------------------------------------------------------------------------------
        // Constructor
        // ------------------------------------------------------------------------------------

        /**
         * Constructor de la clase
         */
        public PaginaEscogerLista()
        {
            InitializeComponent();            
            item = ParametroPaginas.darParametroConIndice(0) as Item;
        }


        // ------------------------------------------------------------------------------------
        // Métodos generales
        // ------------------------------------------------------------------------------------

        /**
         * Método que se ejecuta cuando se selecciona una celda
         * @celda - Celda seleccionada por medio de la interfaz gráfica
         */
        public void seleccionarCelda(CeldaCheck celda)
        {
            MessageBox.Show("El ítem se ha agregado a la lista " + (celda.objeto as Lista).nombre, "Ítem nuevo", MessageBoxButton.OK);
            (celda.objeto as Lista).agregarItem(item);
            celda.btnObjeto.IsEnabled = false;
            celda.btnTransparente.IsEnabled = false;
        }

        // ------------------------------------------------------------------------------------
        // Métodos manejadores de eventos
        // ------------------------------------------------------------------------------------

        /**
         * Maneja el evento en el que se navega a la página
         * @e - Evento
         */
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            celdas = new List<CeldaCheck>();
            listListas.Items.Clear();
            //Crea las celdas a partir de las listas encontradas en el mundo
            foreach (Lista lista in MoviTienda.darInstancia.cliente.listas)
            {
                celdas.Add(new CeldaCheck(this, lista, 0));
            }

            //Agrega la celda a la listListas para que se pinte
            foreach (CeldaCheck celda in celdas)
            {
                if ((celda.objeto as Lista).items.Contains(item))
                {
                    celda.btnObjeto.IsEnabled = false;
                    celda.btnTransparente.IsEnabled = false;
                }
                    

                listListas.Items.Add(celda);
            }
        }

        /**
         * Maneja el evento en el que se oprime el botón btnAgregarLista
         * @sender - Objeto que envía el evento
         * @e - Evento
         */
        private void btnAgregarLista_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new Uri("/Interfaz/PaginaCrearLista.xaml", UriKind.RelativeOrAbsolute));
        }
    }
}